using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._GeoAnalyticsServerTools._SummarizeData
{
    /// <summary>
    /// <para>Summarize Within</para>
    /// <para>Overlays a polygon layer with another layer to summarize the number of points, length of the lines, or area of the polygons within each polygon and calculates attribute field statistics about those features within the polygons.</para>
    /// <para>将一个面图层与另一个图层叠加，以汇总每个面内面的点数、线长或面面积，并计算有关面内这些要素的属性字段统计数据。</para>
    /// </summary>    
    [DisplayName("Summarize Within")]
    public class SummarizeWithin : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public SummarizeWithin()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_summarized_layer">
        /// <para>Summarized  Layer</para>
        /// <para>The point, line, or polygon features that will be summarized by either polygons or bins.</para>
        /// <para>将由面或图格汇总的点、线或面要素。</para>
        /// </param>
        /// <param name="_output_name">
        /// <para>Output  Name</para>
        /// <para>The name of the output polygon feature service containing the intersecting geometries and attributes.</para>
        /// <para>包含相交几何和属性的输出面要素服务的名称。</para>
        /// </param>
        public SummarizeWithin(object _summarized_layer, object _output_name)
        {
            this._summarized_layer = _summarized_layer;
            this._output_name = _output_name;
        }
        public override string ToolboxName => "GeoAnalytics Server Tools";

        public override string ToolName => "Summarize Within";

        public override string CallName => "geoanalytics.SummarizeWithin";

        public override List<string> AcceptEnvironments => ["extent", "outputCoordinateSystem", "workspace"];

        public override object[] ParameterInfo => [_summarized_layer, _output_name, _polygon_or_bin.GetGPValue(), _bin_type.GetGPValue(), _bin_size, _summary_polygons, _sum_shape.GetGPValue(), _shape_units.GetGPValue(), _standard_summary_fields, _weighted_summary_fields, _output, _data_store.GetGPValue(), _group_by_field, _add_minority_majority.GetGPValue(), _add_percentages.GetGPValue(), _group_by_summary];

        /// <summary>
        /// <para>Summarized  Layer</para>
        /// <para>The point, line, or polygon features that will be summarized by either polygons or bins.</para>
        /// <para>将由面或图格汇总的点、线或面要素。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Summarized  Layer")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _summarized_layer { get; set; }


        /// <summary>
        /// <para>Output  Name</para>
        /// <para>The name of the output polygon feature service containing the intersecting geometries and attributes.</para>
        /// <para>包含相交几何和属性的输出面要素服务的名称。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output  Name")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _output_name { get; set; }


        /// <summary>
        /// <para>Polygon or Bin</para>
        /// <para><xdoc>
        ///   <para>Specifies whether Summarized Layer will be summarized by polygons or bins.</para>
        ///   <bulletList>
        ///     <bullet_item>Polygon—The summarized layer will be aggregated into a polygon dataset.</bullet_item><para/>
        ///     <bullet_item>Bin—The summarized layer will be aggregated into square or hexagonal bins that are generated when the tool is run.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定“汇总图层”是按面还是条柱进行汇总。</para>
        ///   <bulletList>
        ///     <bullet_item>面—汇总图层将聚合到面数据集中。</bullet_item><para/>
        ///     <bullet_item>图格—汇总图层将聚合为运行工具时生成的方形或六边形图格。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Polygon or Bin")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _polygon_or_bin_value _polygon_or_bin { get; set; } = _polygon_or_bin_value._POLYGON;

        public enum _polygon_or_bin_value
        {
            /// <summary>
            /// <para>Polygon</para>
            /// <para>Polygon—The summarized layer will be aggregated into a polygon dataset.</para>
            /// <para>面—汇总图层将聚合到面数据集中。</para>
            /// </summary>
            [Description("Polygon")]
            [GPEnumValue("POLYGON")]
            _POLYGON,

            /// <summary>
            /// <para>Bin</para>
            /// <para>Bin—The summarized layer will be aggregated into square or hexagonal bins that are generated when the tool is run.</para>
            /// <para>图格—汇总图层将聚合为运行工具时生成的方形或六边形图格。</para>
            /// </summary>
            [Description("Bin")]
            [GPEnumValue("BIN")]
            _BIN,

        }

        /// <summary>
        /// <para>Bin Type</para>
        /// <para><xdoc>
        ///   <para>Specifies the bin shape that will be generated to summarize features.</para>
        ///   <bulletList>
        ///     <bullet_item>Square—Bin Size represents the height of a square. This is the default.</bullet_item><para/>
        ///     <bullet_item>Hexagon—Bin Size represents the height between two parallel sides.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定将生成的图格形状以汇总要素。</para>
        ///   <bulletList>
        ///     <bullet_item>正方形 - 图格大小表示正方形的高度。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>六边形 （Hexagon） - 箱大小表示两条平行边之间的高度。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Bin Type")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _bin_type_value _bin_type { get; set; } = _bin_type_value._SQUARE;

        public enum _bin_type_value
        {
            /// <summary>
            /// <para>Square</para>
            /// <para>Square—Bin Size represents the height of a square. This is the default.</para>
            /// <para>正方形 - 图格大小表示正方形的高度。这是默认设置。</para>
            /// </summary>
            [Description("Square")]
            [GPEnumValue("SQUARE")]
            _SQUARE,

            /// <summary>
            /// <para>Hexagon</para>
            /// <para>Hexagon—Bin Size represents the height between two parallel sides.</para>
            /// <para>六边形 （Hexagon） - 箱大小表示两条平行边之间的高度。</para>
            /// </summary>
            [Description("Hexagon")]
            [GPEnumValue("HEXAGON")]
            _HEXAGON,

        }

        /// <summary>
        /// <para>Bin Size</para>
        /// <para>The distance interval that represents the bin size and units by which the input features will be summarized.</para>
        /// <para>表示图格大小和单位的距离间隔，用于汇总输入要素。</para>
        /// <para>单位： Feet | Yards | Miles | NauticalMiles | Meters | Kilometers </para>
        /// </summary>
        [DisplayName("Bin Size")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public string? _bin_size { get; set; } = null;


        /// <summary>
        /// <para>Summary Polygons</para>
        /// <para>The polygons used to summarize the features in the input summarized layer.</para>
        /// <para>用于汇总输入汇总图层中要素的面。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Summary Polygons")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _summary_polygons { get; set; } = null;


        /// <summary>
        /// <para>Add shape summary attributes</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the length of lines or area of polygons within the summary layer (polygon or bin) will be calculated. The count of points, lines, and polygons intersecting the summary shape will always be included.</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>Checked—Summary shape values will be calculated. This is the default.</bullet_item><para/>
        ///       <bullet_item>Unchecked—Summary shape values will not be calculated.</bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否计算汇总图层（面或图格）内的线的长度或面的面积。将始终包括与汇总形状相交的点、线和面的计数。</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>选中 （Checked） - 将计算汇总形状值。这是默认设置。</bullet_item><para/>
        ///       <bullet_item>未选中 - 将不计算汇总形状值。</bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Add shape summary attributes")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _sum_shape_value _sum_shape { get; set; } = _sum_shape_value._true;

        public enum _sum_shape_value
        {
            /// <summary>
            /// <para>ADD_SUMMARY</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ADD_SUMMARY")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_SUMMARY</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_SUMMARY")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Shape Units</para>
        /// <para><xdoc>
        ///   <para>Specifies the unit to be used to calculate shape summary attributes. If the input summary features are points, a shape unit is unnecessary, since only the count of points within each input polygon is added. If the input summary features are lines, specify a linear unit. If the input summary features are polygons, specify an areal unit.</para>
        ///   <bulletList>
        ///     <bullet_item>Meters—The shape units will be meters.</bullet_item><para/>
        ///     <bullet_item>Kilometers—The shape units will be kilometers.</bullet_item><para/>
        ///     <bullet_item>Feet—The shape units will be feet.</bullet_item><para/>
        ///     <bullet_item>Yards—The shape units will be yards.</bullet_item><para/>
        ///     <bullet_item>Miles—The shape units will be miles.</bullet_item><para/>
        ///     <bullet_item>Acres—The shape units will be acres.</bullet_item><para/>
        ///     <bullet_item>Hectares—The shape units will be hectares.</bullet_item><para/>
        ///     <bullet_item>Square meters—The shape units will be square meters.</bullet_item><para/>
        ///     <bullet_item>Square kilometers—The shape units will be square kilometers.</bullet_item><para/>
        ///     <bullet_item>Square feet—The shape units will be square feet.</bullet_item><para/>
        ///     <bullet_item>Square yards—The shape units will be square yards.</bullet_item><para/>
        ///     <bullet_item>Square miles—The shape units will be square miles.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定用于计算形状汇总属性的单位。如果输入汇总要素为点，则不需要形状单位，因为仅添加每个输入面内的点计数。如果输入汇总要素为线，则指定线性单位。如果输入汇总要素为面，则指定区域单位。</para>
        ///   <bulletList>
        ///     <bullet_item>米—形状单位将为米。</bullet_item><para/>
        ///     <bullet_item>千米—形状单位将为千米。</bullet_item><para/>
        ///     <bullet_item>英尺—形状单位将为英尺。</bullet_item><para/>
        ///     <bullet_item>码 - 形状单位将为码。</bullet_item><para/>
        ///     <bullet_item>英里—形状单位将为英里。</bullet_item><para/>
        ///     <bullet_item>英亩 - 形状单位将为英亩。</bullet_item><para/>
        ///     <bullet_item>公顷—形状单位将为公顷。</bullet_item><para/>
        ///     <bullet_item>平方米—形状单位将为平方米。</bullet_item><para/>
        ///     <bullet_item>平方千米—形状单位将为平方千米。</bullet_item><para/>
        ///     <bullet_item>平方英尺—形状单位将为平方英尺。</bullet_item><para/>
        ///     <bullet_item>平方码—形状单位将为平方码。</bullet_item><para/>
        ///     <bullet_item>平方英里—形状单位将为平方英里。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Shape Units")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _shape_units_value? _shape_units { get; set; } = null;

        public enum _shape_units_value
        {
            /// <summary>
            /// <para>Acres</para>
            /// <para>Acres—The shape units will be acres.</para>
            /// <para>英亩 - 形状单位将为英亩。</para>
            /// </summary>
            [Description("Acres")]
            [GPEnumValue("ACRES")]
            _ACRES,

            /// <summary>
            /// <para>Hectares</para>
            /// <para>Hectares—The shape units will be hectares.</para>
            /// <para>公顷—形状单位将为公顷。</para>
            /// </summary>
            [Description("Hectares")]
            [GPEnumValue("HECTARES")]
            _HECTARES,

            /// <summary>
            /// <para>Square meters</para>
            /// <para>Square meters—The shape units will be square meters.</para>
            /// <para>平方米—形状单位将为平方米。</para>
            /// </summary>
            [Description("Square meters")]
            [GPEnumValue("SQUARE_METERS")]
            _SQUARE_METERS,

            /// <summary>
            /// <para>Square kilometers</para>
            /// <para>Square kilometers—The shape units will be square kilometers.</para>
            /// <para>平方千米—形状单位将为平方千米。</para>
            /// </summary>
            [Description("Square kilometers")]
            [GPEnumValue("SQUARE_KILOMETERS")]
            _SQUARE_KILOMETERS,

            /// <summary>
            /// <para>Square feet</para>
            /// <para>Square feet—The shape units will be square feet.</para>
            /// <para>平方英尺—形状单位将为平方英尺。</para>
            /// </summary>
            [Description("Square feet")]
            [GPEnumValue("SQUARE_FEET")]
            _SQUARE_FEET,

            /// <summary>
            /// <para>Square yards</para>
            /// <para>Square yards—The shape units will be square yards.</para>
            /// <para>平方码—形状单位将为平方码。</para>
            /// </summary>
            [Description("Square yards")]
            [GPEnumValue("SQUARE_YARDS")]
            _SQUARE_YARDS,

            /// <summary>
            /// <para>Square miles</para>
            /// <para>Square miles—The shape units will be square miles.</para>
            /// <para>平方英里—形状单位将为平方英里。</para>
            /// </summary>
            [Description("Square miles")]
            [GPEnumValue("SQUARE_MILES")]
            _SQUARE_MILES,

            /// <summary>
            /// <para>Meters</para>
            /// <para>Meters—The shape units will be meters.</para>
            /// <para>米—形状单位将为米。</para>
            /// </summary>
            [Description("Meters")]
            [GPEnumValue("METERS")]
            _METERS,

            /// <summary>
            /// <para>Kilometers</para>
            /// <para>Kilometers—The shape units will be kilometers.</para>
            /// <para>千米—形状单位将为千米。</para>
            /// </summary>
            [Description("Kilometers")]
            [GPEnumValue("KILOMETERS")]
            _KILOMETERS,

            /// <summary>
            /// <para>Feet</para>
            /// <para>Feet—The shape units will be feet.</para>
            /// <para>英尺—形状单位将为英尺。</para>
            /// </summary>
            [Description("Feet")]
            [GPEnumValue("FEET")]
            _FEET,

            /// <summary>
            /// <para>Yards</para>
            /// <para>Yards—The shape units will be yards.</para>
            /// <para>码 - 形状单位将为码。</para>
            /// </summary>
            [Description("Yards")]
            [GPEnumValue("YARDS")]
            _YARDS,

            /// <summary>
            /// <para>Miles</para>
            /// <para>Miles—The shape units will be miles.</para>
            /// <para>英里—形状单位将为英里。</para>
            /// </summary>
            [Description("Miles")]
            [GPEnumValue("MILES")]
            _MILES,

        }

        /// <summary>
        /// <para>Standard Summary Fields</para>
        /// <para>The statistics that will be calculated on specified fields.</para>
        /// <para>将对指定字段进行计算的统计信息。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Standard Summary Fields")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _standard_summary_fields { get; set; } = null;


        /// <summary>
        /// <para>Weighted Summary Fields</para>
        /// <para><xdoc>
        ///   <para>Specifies the weighted statistics that will be calculated on specified fields.</para>
        ///   <bulletList>
        ///     <bullet_item>Count—The count of each field will be calculated, multiplied by the proportion of the summarized layer within the polygons.</bullet_item><para/>
        ///     <bullet_item>Sum—The sum of weighted values in each field will be calculated, in which the weight applied is the proportion of the summarized layer within the polygons.</bullet_item><para/>
        ///     <bullet_item>Mean—The mean of weighted values in each field will be calculated, in which the weight applied is the proportion of the summarized layer within the polygons.</bullet_item><para/>
        ///     <bullet_item>Minimum—The minimum of weighted values in each field will be calculated, in which the weight applied is the proportion of the summarized layer within the polygons.</bullet_item><para/>
        ///     <bullet_item>Maximum—The maximum of weighted values in each field will be calculated, in which the weight applied is the proportion of the summarized layer within the polygons.</bullet_item><para/>
        ///     <bullet_item>Range—The difference between Minimum and Maximum will be calculated.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定将对指定字段进行计算的加权统计量。</para>
        ///   <bulletList>
        ///     <bullet_item>计数—将计算每个字段的计数，然后乘以面内汇总图层的比例。</bullet_item><para/>
        ///     <bullet_item>总和—将计算每个字段中加权值的总和，其中应用的权重为面内汇总图层的比例。</bullet_item><para/>
        ///     <bullet_item>均值—将计算每个字段中加权值的平均值，其中应用的权重为面内汇总图层的比例。</bullet_item><para/>
        ///     <bullet_item>最小值—将计算每个字段中加权值的最小值，其中应用的权重为面内汇总图层的比例。</bullet_item><para/>
        ///     <bullet_item>最大值—将计算每个字段中加权值的最大值，其中应用的权重为面内汇总图层的比例。</bullet_item><para/>
        ///     <bullet_item>范围—将计算最小值和最大值之间的差值。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Weighted Summary Fields")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _weighted_summary_fields { get; set; } = null;


        /// <summary>
        /// <para>Output Feature Layer</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Feature Layer")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _output { get; set; }


        /// <summary>
        /// <para>Data Store</para>
        /// <para><xdoc>
        ///   <para>Specifies the ArcGIS Data Store where the output will be saved. The default is Spatiotemporal big data store. All results stored in a spatiotemporal big data store will be stored in WGS84. Results stored in a relational data store will maintain their coordinate system.</para>
        ///   <bulletList>
        ///     <bullet_item>Spatiotemporal big data store—Output will be stored in a spatiotemporal big data store. This is the default.</bullet_item><para/>
        ///     <bullet_item>Relational data store—Output will be stored in a relational data store.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定将保存输出的 ArcGIS Data Store。默认值为 Spatiotemporal 大数据存储。存储在时空大数据存储中的所有结果都将存储在 WGS84 中。存储在关系数据存储中的结果将保留其坐标系。</para>
        ///   <bulletList>
        ///     <bullet_item>时空大数据存储 - 输出将存储在时空大数据存储中。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>关系数据存储 - 输出将存储在关系数据存储中。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Data Store")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _data_store_value _data_store { get; set; } = _data_store_value._SPATIOTEMPORAL_DATA_STORE;

        public enum _data_store_value
        {
            /// <summary>
            /// <para>Spatiotemporal big data store</para>
            /// <para>Spatiotemporal big data store—Output will be stored in a spatiotemporal big data store. This is the default.</para>
            /// <para>时空大数据存储 - 输出将存储在时空大数据存储中。这是默认设置。</para>
            /// </summary>
            [Description("Spatiotemporal big data store")]
            [GPEnumValue("SPATIOTEMPORAL_DATA_STORE")]
            _SPATIOTEMPORAL_DATA_STORE,

            /// <summary>
            /// <para>Relational data store</para>
            /// <para>Relational data store—Output will be stored in a relational data store.</para>
            /// <para>关系数据存储 - 输出将存储在关系数据存储中。</para>
            /// </summary>
            [Description("Relational data store")]
            [GPEnumValue("RELATIONAL_DATA_STORE")]
            _RELATIONAL_DATA_STORE,

        }

        /// <summary>
        /// <para>Group By Field</para>
        /// <para>A field from the input summary features that will be used to calculate statistics for each unique attribute value. For example, the input summary features contain point locations of businesses that store hazardous materials, and one of the fields is HazardClass, containing codes that describe the type of hazardous material stored. To calculate summaries by each unique value of HazardClass, use it as the group by field.</para>
        /// <para>输入汇总要素中的字段，用于计算每个唯一属性值的统计数据。例如，输入摘要要素包含存储危险物料的企业的点位置，其中一个字段是 HazardClass，其中包含描述存储的危险物料类型的代码。若要按 HazardClass 的每个唯一值计算摘要，请将其用作分组依据字段。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Group By Field")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _group_by_field { get; set; } = null;


        /// <summary>
        /// <para>Add Minority and Majority Attributes</para>
        /// <para><xdoc>
        ///   <para>Specifies whether minority (least dominant) and majority (most dominant) attribute values for each group field within each boundary will be added. If they are, two new fields are added to the output layer prefixed with Majority_ and Minority_. This parameter only applies when the Group By Field parameter is used.
        ///   <bulletList>
        ///     <bullet_item>Unchecked—Minority and majority fields will not be added. This is the default.  </bullet_item><para/>
        ///     <bullet_item>Checked—Minority and majority fields will be added.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定是否为每个边界内的每个组字段添加少数（最不主要）和多数（最主要）属性值。如果是，则向以 Majority_ 和 Minority_ 为前缀的输出图层添加两个新字段。仅当使用“按字段分组”参数时，此参数才适用。
        ///   <bulletList>
        ///     <bullet_item>未选中 - 不会添加少数和多数字段。这是默认设置。 </bullet_item><para/>
        ///     <bullet_item>选中 - 将添加少数和多数字段。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Add Minority and Majority Attributes")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _add_minority_majority_value? _add_minority_majority { get; set; } = null;

        public enum _add_minority_majority_value
        {
            /// <summary>
            /// <para>ADD_MIN_MAJ</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ADD_MIN_MAJ")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_MIN_MAJ</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_MIN_MAJ")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Add Group Percentages</para>
        /// <para><xdoc>
        ///   <para>Specifies whether percentage fields will be added. If they are, the percentage of each unique group value is calculated for each input polygon. This parameter only applies when the Group By Field and Add Minority and Majority Attributes parameters are used.
        ///   <bulletList>
        ///     <bullet_item>Unchecked—Percentage fields will not be added. This is the default.  </bullet_item><para/>
        ///     <bullet_item>Checked—Percentage fields will be added.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定是否添加百分比字段。如果是，则为每个输入面计算每个唯一组值的百分比。仅当使用“分组依据字段”和“添加少数和多数属性”参数时，此参数才适用。
        ///   <bulletList>
        ///     <bullet_item>未选中 - 不会添加百分比字段。这是默认设置。 </bullet_item><para/>
        ///     <bullet_item>选中 - 将添加百分比字段。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Add Group Percentages")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _add_percentages_value? _add_percentages { get; set; } = null;

        public enum _add_percentages_value
        {
            /// <summary>
            /// <para>ADD_PERCENT</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ADD_PERCENT")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_PERCENT</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_PERCENT")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Group By Summary</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Group By Summary")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _group_by_summary { get; set; }


        public SummarizeWithin SetEnv(object extent = null, object outputCoordinateSystem = null, object workspace = null)
        {
            base.SetEnv(extent: extent, outputCoordinateSystem: outputCoordinateSystem, workspace: workspace);
            return this;
        }

    }

}